# For each..next

for each..next 控制陳述式是指令碼反覆運算建構，這會對於逗號分隔清單中的各個值執行一或數個陳述式。將會為清單的各個值，執行由 for 與 next 括住之迴圈內的陳述式。

語法：

特殊語法能夠以目前目錄中的檔案和目錄名稱產生清單。

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

引數：

For each 引數

| 引數 | 描述 |
| --- | --- |
| var | 為各個迴圈執行從清單取得新值的指令碼變數名稱。如果在 next 之後指定 var，它的變數名稱必須與對應的 for each 之後出現的變數名稱相同。 |

迴圈內的陳述式可變更 var 變數的值，不過在程式設計上這不見得是好方法。

如果 exit for 子句出現在迴圈中，指令碼的執行將傳輸到 next 子句後的第一個陳述式，代表迴圈結束。選用 when 或 unless 後置詞，即可將 exit for 子句設定為條件子句。

資訊備註由於 for each..next 陳述式是控制陳述式，因而會以分號或行結尾來結束，所以這三個可能的子句 (for each、exit for、與 next) 都不能超過行邊界。

語法：

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

List 引數

| 引數 | 描述 |
| --- | --- |
| constant | 任何數字或字串。請注意，直接在指令碼中寫入的字串必須以單引號括住。沒有單引號的字串將被解譯為變數，因而將使用變數的值。數字不需要以單引號括住。 |
| expression | 任意運算式。 |
| mask | 檔案名稱或目錄名稱遮罩，其中可能包含任何有效的檔案名稱字元，以及標準的萬用字元 \* 和 ?。 |
| condition | 評估為 True 或 False 的邏輯運算式。 |
| statements | 是一或多個 QlikView 指令碼陳述式的任何群組。 |
| filelist mask | 此語法會對於符合檔案名稱遮罩的目前目錄中所有的檔案產生逗號分隔清單。 |
| dirlist mask | 此語法會對於符合資料夾目錄名稱遮罩的目前資料夾中所有的資料夾產生逗號分隔清單。 |
| fieldvaluelist mask | 此語法透過已載入至 QlikView 的欄位值反覆運算。 |

警告備註Qlik 網頁儲存空間提供者連接器 和其他 DataFiles 連線不支援使用萬用字元 (\* 和 ?) 的篩選遮罩。

範例 1: 載入檔案清單

```
// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz'    LOAD * from file$(a).csv; next
```

範例 2: 在磁碟上建立檔案清單

此範例會載入資料夾中所有 QlikView 相關檔案的清單。

```
 sub DoDir (Root)    for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'        for each File in filelist (Root&'\*.' &Ext)           LOAD              '$(File)' as Name,              FileSize( '$(File)' ) as Size,              FileTime( '$(File)' ) as FileTime          autogenerate 1;        next File     next Ext    for each Dir in dirlist (Root&'\*' )        call DoDir (Dir)     next Dir  end sub  call DoDir ('C:')
```

範例 3: 透過欄位值反覆運算

此範例會透過 FIELD 的已載入值清單反覆運算，並產生新的欄位 NEWFIELD。對於 FIELD 的每一個值，將建立兩筆 NEWFIELD 記錄。

```
 load * inline [ FIELD one two three ];  FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a  
```

產生的表格如下所示：

Example 3

| NEWFIELD |
| --- |
| one-1 |
| one-2 |
| two-1 |
| two-2 |
| three-1 |
| three-2 |

## 瞭解更多資訊

* [For..next](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/For.htm)
* [Next](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Next.htm)
* [Exit](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Exit.htm)